package Thread;

/*void join()
join方法可以使调用该方法的线程进入阻塞
状态，直到该方法所属线程完成工作才会解除
调用该方法线程的阻塞状态.
join方法一般用来完成多个线程之间的同步工
作问题.*/


public class ThreadJoin {
    private static boolean isFinish=false;
    public static void main(String[] args) {
        Thread download=new Thread(){
          public void run(){
              System.out.println("开始下载图片");
              for (int i = 0; i <= 100; i++) {
                  System.out.println("下载:"+i);
              }
              try {
                  Thread.sleep(50);
              } catch (InterruptedException e) {
                  e.printStackTrace();
              }
              System.out.println("图片下载完毕");
              isFinish=true;
          }
        };

        Thread show=new Thread(){
          public void run(){
              System.out.println("开始显示图片");

              //等待图片下载完
              //哪个方法阻止 哪个方法就调用join   等谁的方法完成就写谁
              try {
                  download.join();
              } catch (InterruptedException e) {
                  e.printStackTrace();
              }

              if (!isFinish){
                  throw new RuntimeException("图片没有下载完成");
              }
              System.out.println("显示完毕");
          }
        };
        download.start();
        show.start();
    }
}
